package com.sg.dto.integration.component;


import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Objects;

/**
 * @desc ConfSchemeItemResultDto
 * @使用场景
 */
@Data
public class ConfSchemeItemResultDto extends BaseDto implements Serializable {

    /**
     * 配置方案ID:
     */
    @ApiModelProperty("配置方案ID ")
    private String confSchemeId;

    /**
     * 结果值:
     */
    @ApiModelProperty("结果值")
    private String endValue;

    /**
     * 配置项标识:
     */
    @ApiModelProperty("配置项标识")
    private String confItemCode;
    /**
     * 配置结果归属对象类型:
     */
    @ApiModelProperty("配置结果归属对象类型")
    private String resultAspObjType;
    /**
     * 配置结果归属对象ID:
     */
    @ApiModelProperty("配置结果归属对象ID")
    private String resultAspObjId;
    /**
     * 标题文案:
     */
    @ApiModelProperty("标题文案")
    private String headCopywriter;
    /**
     * 模板方案简述:
     */
    @ApiModelProperty("模板方案简述")
    private String themeSchemeSketch;
    /**
     * 按钮提示文案:
     */
    @ApiModelProperty("按钮提示文案")
    private String buttonCopywriter;
    /**
     * 结果类型:
     */
    @ApiModelProperty("结果类型")
    private String resultType;
    /**
     * 选项类型:
     */
    @NotNull(message = "选项类型不能为空")
    @ApiModelProperty("选项类型")
    private String optionType;
    /**
     * 配置项下选项关系ID:
     */
    @NotNull(message = "配置项下选项关系ID 不能为空")
    @ApiModelProperty("配置项下选项关系ID ")
    private String confOptionRshipId;
    /**
     * 配置选项标识:
     */
    @NotNull(message = "配置选项标识不能为空")
    @ApiModelProperty("配置选项标识")
    private String confOptionCode;
    /**
     * 冗余配置选项名称:
     */
    @ApiModelProperty("冗余配置选项名称")
    private String confOptionName;
    /**
     * 所属配置项分组标识:
     */
    @NotNull(message = "所属配置项分组标识不能为空")
    @ApiModelProperty("所属配置项分组标识")
    private String confItemClassCode;
    /**
     * 冗余配置项简称:
     */
    @ApiModelProperty("冗余配置项简称")
    private String shortName;
    /**
     * 是否平台数据:
     */
    @NotNull(message = "是否平台数据不能为空")
    @ApiModelProperty("是否平台数据")
    private String isPlatData;
    /**
     * 是否定制结果:
     */
    @NotNull(message = "是否定制结果不能为空")
    @ApiModelProperty("是否定制结果")
    private String isCeResult;
    /**
     * 配置方案标识:
     */
    @NotNull(message = "配置方案标识不能为空")
    @ApiModelProperty("配置方案标识")
    private String confSchemeCode;
    /**
     * 主体生命周期:
     */
    @NotNull(message = "主体生命周期不能为空")
    @ApiModelProperty("主体生命周期")
    private String subjectLifeCycle;
    /**
     * 分组名称:
     */
    @NotNull(message = "分组名称不能为空")
    @ApiModelProperty("分组名称")
    private String confItemClassName;
    /**
     * 配置方案名称:
     */
    @NotNull(message = "配置方案名称不能为空")
    @ApiModelProperty("配置方案名称")
    private String confSchemeName;
    /**
     * 是否初始方案:
     */
    @NotNull(message = "是否初始方案不能为空")
    @ApiModelProperty("是否初始方案")
    private String isInitialScheme;
    /**
     * 选项排序
     */
    @NotNull(message = "选项排序不能为空")
    @ApiModelProperty("选项排序")
    private Long confOptionSortNum;
    /**
     * 模板方案简述
     */
    @ApiModelProperty("模板方案简述")
    private String evaThemeSketch;

    /**
     * 媒体内容地址
     */
    @ApiModelProperty("媒体内容地址")
    private String mediaContentAddress;
    /**
     * 扩展字段1
     */
    @ApiModelProperty("扩展字段1 ")
    private String extensionField1;

    /**
     * 扩展字段2
     */
    @ApiModelProperty("扩展字段2")
    private String extensionField2;
    /**
     * 选项结果ID
     */
    @ApiModelProperty("选项结果ID")
    private String optionResultId;
    /**
     * 扩展字段3（非必填）
     */
    @ApiModelProperty("扩展字段3 （非必填）")
    private String extensionField3;


    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        ConfSchemeItemResultDto that = (ConfSchemeItemResultDto) o;
        return confSchemeId == that.confSchemeId && endValue == that.endValue && confItemCode == that.confItemCode && resultAspObjType == that.resultAspObjType && resultAspObjId == that.resultAspObjId && headCopywriter == that.headCopywriter && themeSchemeSketch == that.themeSchemeSketch && buttonCopywriter == that.buttonCopywriter && resultType == that.resultType && optionType == that.optionType && confOptionRshipId == that.confOptionRshipId && confOptionCode == that.confOptionCode && confOptionName == that.confOptionName && confItemClassCode == that.confItemClassCode && shortName == that.shortName && isPlatData == that.isPlatData && isCeResult == that.isCeResult && confSchemeCode == that.confSchemeCode && subjectLifeCycle == that.subjectLifeCycle && confItemClassName == that.confItemClassName && confSchemeName == that.confSchemeName && isInitialScheme == that.isInitialScheme && confOptionSortNum == that.confOptionSortNum && evaThemeSketch == that.evaThemeSketch && mediaContentAddress == that.mediaContentAddress && extensionField1 == that.extensionField1 && extensionField2 == that.extensionField2 && optionResultId == that.optionResultId && extensionField3 == that.extensionField3;
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), confSchemeId, endValue, confItemCode, resultAspObjType, resultAspObjId, headCopywriter, themeSchemeSketch, buttonCopywriter, resultType, optionType, confOptionRshipId, confOptionCode, confOptionName, confItemClassCode, shortName, isPlatData, isCeResult, confSchemeCode, subjectLifeCycle, confItemClassName, confSchemeName, isInitialScheme, confOptionSortNum, evaThemeSketch, mediaContentAddress, extensionField1, extensionField2, optionResultId, extensionField3);
    }
}
